# -*- coding: utf-8 -*-
from django.contrib import admin
from app.models import ConfiguracionUsuario, Proveedor, Configuracion,\
    Categoria, Unidad, Producto, FacturaCompra, FacturaCompraItem, Sede,\
    MovimientoTipo, Inventario, ConfiguracionUsuarioSede


class ConfiguracionAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Información básica', {'fields': [
            'nit',
            'nombre',
            'direccion',
            'telefono',
            'fax',
            'email',
            'web',
            'logo',
            'renovacion_hosting',
            'version_producto',
            'observaciones',
            ]}),
    ]
    
    list_display = (
        'nit',
        'nombre',
        'direccion',
        'telefono',
        'fax',
        'email',
        'web',
        'logo',
        'renovacion_hosting',
        'version_producto',
    )
    
    list_filter = ['nit', 'nombre',]
    search_fields = ('nit', 'nombre', 'direccion', 'telefono', 'fax',
                     'email','web',)


class ConfiguracionUsuarioSedeInline(admin.TabularInline):
    model = ConfiguracionUsuarioSede
    extra = 1
    raw_id_fields = ('sede',)
    fields = ('sede', )
    
    
class ConfiguracionUsuarioAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Información básica', {'fields': [
            'configuracion',
            'usuario',]}),
    ]
    
    list_display = (
        'configuracion',
        'usuario',
    )
    
    inlines = [ConfiguracionUsuarioSedeInline]
    list_filter = ['configuracion',]
    search_fields = ('configuracion', 'usuario')
    

class MovimientoTipoAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Información básica', {'fields': [
            'nombre',
            'observaciones',
            ]}),
    ]
    
    list_display = (
        'nombre',
        'observaciones',
    )
    
    search_fields = ('nombre', 'observaciones', )


class MovimientoAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Información básica', {'fields': [
            'configuracion',
            'tipo_movimiento',
            'fecha',
            'responsable',
            'id_documento',
            ]}),
    ]
    
    list_display = (
        'configuracion',
        'tipo_movimiento',
        'fecha',
        'responsable',
        'id_documento',
    )
    
    list_filter = ['configuracion', 'tipo_movimiento',]
    
    search_fields = ('configuracion', 'tipo_movimiento', 'responsable', 'fecha')
    
        
class ProveedorAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Información básica', {'fields': [
            'configuracion',
            'nit',
            'nombre',
            'direccion',
            'telefono',
            'fax',
            'email',
            'web',
            'logo',
            'laboratorio',
            'observaciones',
            ]}),
    ]
    
    list_display = (
        'configuracion',
        'nit',
        'nombre',
        'direccion',
        'telefono',
        'fax',
        'email',
        'web',        
        'laboratorio',
    )
    
    list_filter = ['configuracion', 'laboratorio',]
    
    search_fields = ('configuracion', 'nit', 'nombre', 'direccion', 'telefono', 
                     'fax', 'email', 'web', 'laboratorio',)
    
    
class CategoriaAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Información básica', {'fields': [
            'configuracion',
            'nombre',
            'abrev',
            'sismed',
            ]}),
    ]
    
    list_display = (
        'configuracion',
        'nombre',
        'abrev',
        'sismed',
    )
    
    list_filter = ['configuracion',]
    
    search_fields = ('configuracion', 'nombre', 'abrev', 'sismed',)
    
    
class SedeAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Información básica', {'fields': [
            'configuracion',
            'nombre',
            'abrev',
            'direccion',
            'telefono',
            'fax',
            'email',
            ]}),
    ]
    
    list_display = (
        'configuracion',
        'nombre',
        'abrev',
        'direccion',
        'telefono',
        'fax',
        'email',
    )
    
    list_filter = ['configuracion',]
    
    search_fields = ('configuracion', 'nombre', 'abrev', 'direccion', 'telefono',)
    
        
class UnidadAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Información básica', {'fields': [
            'configuracion',
            'nombre',
            'abrev',
            ]}),
    ]
    
    list_display = (
        'configuracion',
        'nombre',
        'abrev',
    )
    
    list_filter = ['configuracion','nombre','abrev',]
    
    search_fields = ('configuracion',)


class ProductoAdmin(admin.ModelAdmin):    
    fieldsets = [
        ('Información básica', {'fields': [
            'configuracion',
            'nombre',
            'descripcion',
            'categoria',
            'unidad',
            'cum',
            'codigo',
            'logo',
            'observaciones',
            ]}),
    ]
    
    list_display = (
        'configuracion',
        'nombre',
        'descripcion',
        'categoria',
        'unidad',
        'cum',
        'codigo',
        'observaciones',
    )
    
    list_filter = ['configuracion', 'categoria', 'unidad',]
    
    search_fields = ('configuracion', 'nombre', 'descripcion', 'categoria', 'unidad', 'cum', 'codigo')
     

class FacturaCompraItemInline(admin.TabularInline):
    model = FacturaCompraItem
    extra = 1
    raw_id_fields = ('producto',)
    fields = ('factura_compra', 'configuracion', 'producto', 'cantidad', 'lote', 'fecha_vencimiento', 'valor_unitario', 'iva')
    

class FacturaCompraAdmin(admin.ModelAdmin):    
    fieldsets = [
        ('Información básica', {'fields': [
            'configuracion',
            'proveedor',
            'numero',
            'fecha_emision',
            'fecha_vencimiento',
            'vendedor',
            'orden_compra',
            'subtotal',
            'iva',
            'total',
            'pagada',
            'observaciones',
            ]}),
    ]
    
    list_display = (
        'configuracion',
        'proveedor',
        'numero',
        'fecha_emision',
        'fecha_vencimiento',
        'vendedor',
        'orden_compra',
        'subtotal',
        'iva',
        'total',
        'pagada',
        'observaciones',
    )
    
    inlines = [FacturaCompraItemInline]
    
    list_filter = ['configuracion', 'pagada', 'proveedor',]
    
    search_fields = ('configuracion', 'proveedor', 'numero', 'fecha_emision', 
                     'fecha_vencimiento', 'vendedor', 'orden_compra', 'subtotal', 
                     'iva', 'total', 'pagada',)
      
        
class InventarioAdmin(admin.ModelAdmin):
    raw_id_fields = ('configuracion',)
    
    fieldsets = [
        ('Información básica', {'fields': [
            'configuracion',
            'item',
            'cantidad',
            'sede',
            'activo',
            ]}),
    ]
    
    list_display = (
        'configuracion',
        'item',
        'cantidad',
        'sede',
        'activo',
    )
    
    list_filter = ['configuracion', 'sede',]
    
    search_fields = ('configuracion', 'item', 'cantidad', 'sede', 'activo')
    
    
#===============================================================================
#AGREGAR VISTAS A INTERFAZ ADMIN 
#===============================================================================
admin.site.register(Categoria, CategoriaAdmin)
admin.site.register(Sede, SedeAdmin)
admin.site.register(Configuracion, ConfiguracionAdmin)
admin.site.register(ConfiguracionUsuario, ConfiguracionUsuarioAdmin)
admin.site.register(FacturaCompra, FacturaCompraAdmin)
#admin.site.register(Laboratorio, LaboratorioAdmin)
admin.site.register(Producto, ProductoAdmin)
admin.site.register(Proveedor, ProveedorAdmin)
admin.site.register(Unidad, UnidadAdmin)
admin.site.register(MovimientoTipo, MovimientoTipoAdmin)
#admin.site.register(Movimientos, MovimientoAdmin)
admin.site.register(Inventario, InventarioAdmin)